package com.eltsistemas.controller.rescisao;

import java.text.ParseException;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.eltsistemas.adapter.Calendario;
import com.eltsistemas.dao.GenericDao;
import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.modelo.Desligamento;
import com.eltsistemas.modelo.Funcionario;

@Controller
@RequestMapping("/rescisao")
public class RescisaoAdiciona {
	
	@RequestMapping(value="/adiciona", method=RequestMethod.POST)
	public String cadastro(Desligamento desligamento, String dtDemissao, String nomeFuncionario, 
						   String mot) throws ParseException
	{
		try
		{
			Session session = new HibernateUtil().getSession();
			session.beginTransaction();
			
			
			GenericDao<Funcionario> daoFuncionario = new GenericDao<>(session, Funcionario.class);
			GenericDao<Desligamento> daoDesligamento = new GenericDao<>(session, Desligamento.class);
			
			Funcionario funcionario = daoFuncionario.findByName(nomeFuncionario);
	
			funcionario.setSituacao("Desligado");
			
			desligamento.setFuncionario(funcionario);
			desligamento.setDataDemissao(new Calendario().getData( dtDemissao ) );
			
			if(desligamento.getMotivo().equals("outros"))
			{
				desligamento.setMotivo(mot);
			}
			
			//Comita os dados no banco
			session = daoDesligamento.adiciona(desligamento);	
			session = daoFuncionario.altera(funcionario);
			session.beginTransaction().commit();
			session.close();
	
			return "redirect:lista?nomeFuncionario="+nomeFuncionario;	
		}
		catch(HibernateException e)
		{
			System.out.println("Erro: "+e);
			return "redirect:/painel/erro";
		}	
	}

}
